package cn.ecasoft.common.message.config;


import cn.ecasoft.common.message.controller.TaskUtils;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * quartz定时任务的配置
 */
@Configuration
public class JobConfig {
    @Value("${cronTime:*/10 * * * * ? }")
    private String time;

    /**
     * 定时任务1：
     * 同步用户信息Job（任务详情）
     * 定时任务的工作
     */
    @Bean
    public JobDetail JobDetail(){

        JobDetail JobDetail = JobBuilder.newJob(TaskUtils.class)
                // 给jobdetail起一个id
                .withIdentity("printJobDetail")
                // 每个jobdetail中都有一个map，包含关联这个job的数据，在job类中可以通过context获取
                .usingJobData("msg","hello quartz")
                .storeDurably() //必须调用该方法，添加任务
                .build();

        return JobDetail;
    }

    /**
     * 定时任务的触发器
     * @return
     */
    @Bean
    public Trigger testTrigger(){
        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(time); //配置任务频率

        Trigger trigger = TriggerBuilder.newTrigger()
                // 触发关联上面的这个类
                .forJob(JobDetail())
                // 给trigger取个名字
                .withDescription("quartzTaskService")
                .withSchedule(cronScheduleBuilder) //对触发器配置任务
                .build();

        return trigger;
    }
}